//package com.yamaikeji.plan.interceptor;
//
//import com.yamaikeji.common.constant.ShiroConstants;
//import com.yamaikeji.common.core.domain.AjaxResult;
//import com.yamaikeji.common.json.JSON;
//import com.yamaikeji.common.utils.IpUtils;
//import com.yamaikeji.common.utils.StringUtils;
//import com.yamaikeji.framework.util.RedisUtil;
//import com.yamaikeji.system.domain.Ip;
//import com.yamaikeji.system.service.IIpService;
//import org.apache.shiro.cache.Cache;
        //import org.apache.shiro.cache.CacheManager;
//import org.springframework.beans.factory.BeanFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.context.support.WebApplicationContextUtils;
//import org.springframework.web.servlet.HandlerInterceptor;
//import org.springframework.web.servlet.ModelAndView;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.io.OutputStream;
//import java.io.UnsupportedEncodingException;
//import java.util.List;
//
///**
// * ip拦截器
// */
//public class IpInterceptor implements HandlerInterceptor {
//
//    //@Autowired
//    private CacheManager cacheManager;
//
//    //@Resource
//    private RedisUtil redisUtil;
//
//
//    private Cache<String, String> loginRecordCache;
//
//    /**
//     * 在请求处理之前进行调用（Controller方法调用之前）
//     * @param req
//     * @param resp
//     * @param o
//     * @return
//     * @throws Exception
//     */
//    @Override
//    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object o) throws Exception {
//        boolean isPass = true;
//        BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(req.getServletContext());
//        redisUtil = factory.getBean(RedisUtil.class);
//        String token = req.getHeader("token");
//        System.out.println("token:" + token);
//        String userNo = (String) redisUtil.get(token);
//        if(StringUtils.isEmpty(userNo)) {
//            AjaxResult ajaxResult = AjaxResult.error("非法访问");
//            errorResponse(resp, ajaxResult);
//            isPass = false;
//        }
//        req.setAttribute("userNo", userNo);
//        return isPass;
//    }
//
//    /**
//     * 请求处理之后进行调用，但是在视图被渲染之前（Controller方法调用之后）
//     * @param req
//     * @param resp
//     * @param o
//     * @param modelAndView
//     * @throws Exception
//     */
//    @Override
//    public void postHandle(HttpServletRequest req, HttpServletResponse resp, Object o, ModelAndView modelAndView) throws Exception {
//
//    }
//
//    /**
//     * 在整个请求结束之后被调用，也就是在DispatcherServlet 渲染了对应的视图之后执行（主要是用于进行资源清理工作）
//     * @param req
//     * @param resp
//     * @param o
//     * @param e
//     * @throws Exception
//     */
//    @Override
//    public void afterCompletion(HttpServletRequest req, HttpServletResponse resp, Object o, Exception e) throws Exception {
//
//    }
//
//    //返回错误提示
//    public void errorResponse(HttpServletResponse resp, AjaxResult ajaxResult) throws IOException, UnsupportedEncodingException {
//        OutputStream out = null;
//        try{
//            resp.setCharacterEncoding("utf-8");
//            resp.setContentType("text/json");
//            out = resp.getOutputStream();
//            out.write(JSON.marshal(ajaxResult).getBytes("utf-8"));
//            out.flush();
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally{
//            if(out!=null){
//                out.close();
//            }
//        }
//    }
//
//}
